﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entities;
using DataAccess;

namespace Bussiness
{
    public class SavingAccountBussiness
    {
        #region Hoatd1
        public bool validate(SavingAccount savingAccount)
        {
            return true;
        }
        public int Insert(SavingAccount savingAccount)
        {
            if (validate(savingAccount))
            {
                return SavingAccountDao.Install.Insert(savingAccount);
            }
            else
            {
                //write log
                return -1;
            }
        }

        public int Update(SavingAccount savingAccount)
        {
            if (validate(savingAccount))
                return SavingAccountDao.Install.Update(savingAccount);
            else
            {
                return -1;
            }
        }

        public int Delete(Guid savingAccountID)
        {

            return SavingAccountDao.Install.Delete(savingAccountID);

        }
        public SavingAccount GetSavingAccount(Guid savingAccountID)
        {
            return SavingAccountDao.Install.GetSavingAccount(savingAccountID);
        }
        public List<SavingAccount> ListSavingAccount()
        {
            return SavingAccountDao.Install.ListSavingAccount();
        }
        /// Kiểm tra tài khoản tiết kiệm có rút được tiền hay không
        /// </summary>
        /// <param name="savingAccount">The saving account.</param>
        /// <param name="amount">TSố tiền muốn rút</param>
        /// <returns></returns>
        public bool CheckSavingAccount(SavingAccount savingAccount, float amount)
        {
            //Nếu Account null
            if (savingAccount == null)
                return false;
            //Nếu số tiền rút <= 0
            if (amount <= 0)
                return false;
            //Nếu tài khỏan tiết kiệm chưa đến hạn rút
            if (savingAccount.ExpireDate > DateTime.Now)
                return false;
            // Nếu số tiền rút > số tiền có trong tài khoản 
            if (amount > savingAccount.Balance)
                return false;
            // Nếu tổng số tiền đã rút trong ngày > số tiền tối đa được rút trong ngày
            if ((amount + savingAccount.AmountWithrawOnDay()) > savingAccount.DayLimit)
                return false;
            // Nếu số tiền trong ATM ít hơn số tiền muốn rút
            if (amount > AtmSystem.GetATMMoney())
                return false;
            return true;
        }
        #endregion
    }
}
